package global

import (
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"path"
)

var ServiceConfig *Config

type Config struct {
	Deployer     string `mapstructure:"deployer"`
	PortalProver string `mapstructure:"portal_prover"`
	TradeProver  string `mapstructure:"trade_prover"`
	TradeAuditor string `mapstructure:"trade_auditor"`
}

func InitConfig() {
	// 获取当前工作目录
	configPath := path.Join("config.yaml")
	Logger.Debug(configPath)

	// 初始化配置文件
	v := viper.New()
	v.SetConfigFile(configPath)
	if err := v.ReadInConfig(); err != nil {
		Logger.Error("读取配置失败", err)
		return
	}
	ServiceConfig = new(Config)
	if err := v.Unmarshal(ServiceConfig); err != nil {
		Logger.Error("解析配置失败", err)
		return
	}
	Logger.Debug("server config:", map[string]any{"config": ServiceConfig})

	v.WatchConfig()
	v.OnConfigChange(func(in fsnotify.Event) {
		Logger.Debug("配置文件修改了...", nil)
		if err := v.Unmarshal(ServiceConfig); err != nil {
			Logger.Error(err)
			return
		}
		Logger.Debug("server config:", map[string]any{"config": ServiceConfig})
	})
}
